home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / dev / lang / Python16_Src.lha / Python16_Source / Include / myselect.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-09-10  |  1.4 KB  |  67 lines

  1. #ifndef Py_MYSELECT_H
  2. #define Py_MYSELECT_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6.  
  7. /* Include file for users of select() */
  8.  
  9. /* NB caller must include <sys/types.h> */
  10.  
  11. #ifdef HAVE_SYS_SELECT_H
  12.  
  13. #ifdef SYS_SELECT_WITH_SYS_TIME
  14. #include "mytime.h"
  15. #else /* !SYS_SELECT_WITH_SYS_TIME */
  16. #include <time.h>
  17. #endif /* !SYS_SELECT_WITH_SYS_TIME */
  18.  
  19. #include <sys/select.h>
  20.  
  21. #else /* !HAVE_SYS_SELECT_H */
  22.  
  23. #ifdef USE_GUSI1
  24. /* If we don't have sys/select the definition may be in unistd.h */
  25. #include <GUSI.h>
  26. #endif
  27.  
  28. #include "mytime.h"
  29.  
  30. #endif /* !HAVE_SYS_SELECT_H */
  31.  
  32. /* If the fd manipulation macros aren't defined,
  33.    here is a set that should do the job */
  34.  
  35. #ifndef    FD_SETSIZE
  36. #define    FD_SETSIZE    256
  37. #endif
  38.  
  39. #ifndef FD_SET
  40.  
  41. typedef long fd_mask;
  42.  
  43. #define NFDBITS    (sizeof(fd_mask) * NBBY)    /* bits per mask */
  44. #ifndef howmany
  45. #define    howmany(x, y)    (((x)+((y)-1))/(y))
  46. #endif /* howmany */
  47.  
  48. typedef    struct fd_set {
  49.     fd_mask    fds_bits[howmany(FD_SETSIZE, NFDBITS)];
  50. } fd_set;
  51.  
  52. #define    FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
  53. #define    FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
  54. #define    FD_ISSET(n, p)    ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
  55. #define FD_ZERO(p)    memset((char *)(p), '\0', sizeof(*(p)))
  56.  
  57. #endif /* FD_SET */
  58.  
  59. #if defined(AMITCP) || defined(INET225)
  60. #include <proto/socket.h>
  61. #endif
  62.  
  63. #ifdef __cplusplus
  64. }
  65. #endif
  66. #endif /* !Py_MYSELECT_H */
  67.